package com.xbongbong.paas.model;

import com.xbongbong.paas.domain.entity.PaasProcessTemplateNodeEntity;
import com.xbongbong.paas.domain.entity.ext.PaasFormDataEntityExt;
import com.xbongbong.paas.domain.entity.ext.PaasProcessTemplateNodeEntityExt;

import java.util.List;
import java.util.Map;

/**
 * PAAS 流程设计类
 *
 * @author wufeng
 * @date 2018-8-8 9:47
 */
public interface PaasProcessTemplateNodeModel {

    /**
     * 插入实体
     *
     * @param entity 实体
     *
     * @return Integer MyBatis操作结果 1：成功
     */
    Integer insert(PaasProcessTemplateNodeEntity entity);

    /**
     *  查询列表
     * @author wufeng
     * @date 2018/8/13 16:07
     * @param entity 参数集合
     * @return java.util.List<ApplicationListVO>
     */
    List<PaasProcessTemplateNodeEntityExt> list(Map<String, Object> entity);

    /**
     *  查询列表
     * @author wufeng
     * @date 2018/8/13 16:07
     * @param templateId
     * @param corpid
     * @return java.util.List<ApplicationListVO>
     */
    List<PaasProcessTemplateNodeEntityExt> getNodeByTemplateIdList(Long templateId, String corpid);



    /**
     * 查询单个实体
     * @param key 主键
     * @param corpid 公司id
     * @return PaasProcessTemplateNodeEntityExt
     */
    PaasProcessTemplateNodeEntityExt getByKey(Integer key, String corpid);
    /**
     *  查询列表数量
     * @author wufeng
     * @date 2018/8/13 16:07
     * @param entity 参数集合
     * @return Integer
     */
    Integer getEntitysCount(Map<String, Object> entity);

    /**
     * 删除实体
     * @author wufeng
     * @date 2018/8/6 17:18
     * @param entity 实体
     * @return java.lang.Integer  mybatis操作结果，1：成功
     */
    Integer delete(PaasProcessTemplateNodeEntity entity);

    /**
     *  更新名字
     * @author wufeng
     * @date 2018/8/13 10:19
     * @param entity 实体数据
     * @return java.lang.Integer
     */
    Integer update(PaasProcessTemplateNodeEntity entity);

    /**
     * 批量插入
     * @param nodeEntityUpdateList 数据列表
     */
    void insertBatch(List<PaasProcessTemplateNodeEntityExt> nodeEntityUpdateList);

    /**
     * 批量更新
     * @param nodeEntityUpdateList 数据列表
     * @param corpid 公司的id
     * @return Integer
     */
    Integer updateBatch(List<PaasProcessTemplateNodeEntityExt> nodeEntityUpdateList, String corpid);

    /**
     * 批量删除
     * @param nodeEntityUpdateList 数据列表
     * @param corpid 公司的id
     * @return Integer
     */
    Integer deleteBatch(List<PaasProcessTemplateNodeEntityExt> nodeEntityUpdateList, String corpid);

    /**
     * 根据节点id列表查询节点数据
     * @param formDataList 数据列表
     * @param param 参数集合
     * @return List<PaasProcessTemplateNodeEntityExt>
     */
    List<PaasProcessTemplateNodeEntityExt> findEntitysByNodeList(List<PaasFormDataEntityExt> formDataList, Map<String, Object> param);
    /**
     * 批量更新,不对外提供，现在只对提供脚本修复
     * @param nodeEntityUpdateList
     * @return
     */
    Integer updateBatchById(List<PaasProcessTemplateNodeEntityExt> nodeEntityUpdateList);

    /**
     *
     * @param formId
     * @param corpid
     * @return
     */
    Integer deleteByFormId(Long formId, String corpid);
}
